The term “web services” can be viewed as a technology for engaging in business relationships (e.g., buying and selling) in a partially or wholly automated fashion over a network such as the Internet. FIG. 1 shows a web services model 100 that includes a registry 101, a service provider 102 and a service consumer 103. A service consumer 103, or “service requester”, is generally understood to be an entity that seeks and (in cases where a suitable web service is found) uses a particular web service through a network 104.
The registry 101 includes listings of various “available” services, and, may assist the service consumer 103 in searching for a suitable service provider based on the web servicing needs of the service consumer 103. A service provider 102 is the provider of one or more web services that can be accessed over the network 104. Because of the vast expanse of the Internet and interest in automated business engagements, many registries, service consumers and service providers may be in operation at any instant of time.
Presently, the responsibilities of the most prevalent registry function 101 that is associated with the web services effort are defined in various Universal Discovery, Description and Integration (UDDI) specifications provided by uddi.org. Besides providing listings of available services, a UDDI registry 101 may also make available to a service consumer 103 additional details that pertain to any particular web service such as: 1) the location of the web service (e.g., its URI specified by a specific network destination address or name); 2) the capabilities of the web service (e.g., specific methods that are supported by the web service and that may be called upon by the service consumer), and, 3) communication semantics needed for invoking the web service through the network 104 (e.g., the structure of a messaging format and/or protocol needed to properly communicate with the web service).
According to one widely adopted approach, such “additional details” are described in web services Directory Language (WSDL) text documents written in eXtensible Markup Language (XML). Here, for example, for each web service that the registry 101 maintains a listing of, the registry 101 also maintains a WSDL document that describes the location, capabilities and communication semantics of the web service. Presently, a WSDL document for a particular web service is expected to include an “abstract interface” description of the web service (which includes the web service's methods and the data passed between the web service provider and web service consumer) and a “concrete implementation” description of the web service (which includes specific protocol and data format specifications for communicating with the web service (referred to as a “binding”) and the location of the web service (referred to as a “port”)).
According to another widely adopted approach, with respect to the actual communication that occurs between the service consumer 103 and the service provider 102, such communication is implemented through an exchange of Simple Object Access Protocol (SOAP) text messages written in XML.
Efforts are being made to more easily conduct business in a web-based environment. “Web Services” is loosely understood to mean the ability to discover and conduct business in a web-based environment. For example, a user (e.g., a web-based application or person with a web browser) may: 1) search through an online registry of businesses and/or services; 2) find a listing in the registry for web based access to a service that that the user desires to have performed; and then, 3) engage in a web based business relationship with the service application including the passing of relevant information (e.g., pricing, terms, and conditions) over the network. In other words, web services generally refer to offerings of services by one application to another via the World Wide Web.
Given the nature and use of web services and the rapid increase in their demand, interoperability of web services across clients and servers is becoming increasingly important and cumbersome. Some attempts have been made to achieve interoperability across a wide range of platforms and runtimes. For example, using open standards like eXtensible Markup Language (XML), Simple Object Access Protocol (SOAP), Web Services Description Language (WSDL), and Universal Description, Discovery, and Integration (UDDI), some interoperability has been achieved.
A Web application runs within a Web container of a Web server. The Web container provides the runtime environment through components that provide naming context and lifecycle management. Some Web servers may also provide additional services such as security and concurrency control. A Web server may work with an EJB server to provide some of those services. Web containers are also sometimes called Web engines. Like the other Java APIs, different vendors provide their own implementation.
Web applications are composed of web components and other data such as HTML pages. Web components can be servlets, JSP pages created with the JavaServer Pages™ technology, web filters, and web event listeners. These components typically execute in a web server and may respond to HTTP requests from web clients. Servlets, JSP pages, and filters may be used to generate HTML pages that are an application's user interface. They may also be used to generate XML or other format data that is consumed by other application components.
Different deployable modules can be embedded within an EAR file including Java Archives (JAR) that house Java classes or EJBs and Web Archives (WAR). WAR files are used to distribute Web applications (including classes). WARs may contain JSPs, HTML, XML, servlets, etc. Current WAR files also have a typical directory structure with particular files. A WAR contains a WEB-INF directory that has a “web.xml” file that defines the structure of the web application of the WAR. For a web application that utilizes servlets, the servlet container uses the web.xml to determine to which servlet a request should be routed. The web.xml also defines the context variables which can be referenced within the servlets and it is used to define environmental dependencies which are to be configured.
Unfortunately, traditionally deployed Web services suffer from several problems. For each application and/or container that is deployed a different programming model is applied. That means that each deployed archive or application handles contexts, class loading, security, etc. in their own ways. There is also not an Application Programming Interface (API) that can be used to translate commands between the different Web services and the runtime executing them.